package back;

/**
 * Clase Coordenada almacena informacion necesaria para describir una coordenada
 */

public class Coordenada {

	private int x;
	private int y;
	
	/**
	 * Constructor de la clase Coordenada
	 * @param int x componente x de la coordenada.
	 * @param int y componente y de la coordenada.
	 */
	public Coordenada(int x, int y){
		this.x=x;
		this.y=y;
	}
	
	/**
	 * Retorna la componente x de la coordenada.
	 * @return int x componente x de la coordenada.
	 */
	public int getX(){
		return x;
	}
	
	/**
	 * Retorna la componente y de la coordenada.
	 * @return int y componente y de la coordenada.
	 */
	public int getY(){
		return y;
	}

	/**
	 * Retorna la coordenada vecina en direccion del parametro recibido
	 * @param int direccion.
	 * @return Coordenada nuevaCord coordenada nueva.
	 */
	public Coordenada hacia(int direccion) {
		int a=this.x, b=this.y;
		switch(direccion){
		case(0): a+=1;break;
		case(1): b-=1;break;
		case(2): a-=1;break;
		case(3): b+=1;break;
		}
		Coordenada nuevaCord= new Coordenada(a, b);
		return nuevaCord;
	}
	
	/**
	 * Retorna String a partir de la coordenada
	 * @return String string a partir de la coordenada
	 */
	public String toString(){
		return "( "+ x + "," + y + ")\n";
	}
	
	/**
	 * Setea la componente x de la coordenada.
	 * @param int x nuevo valor de la componente x
	 */
	public void setX(int x){
		this.x = x;
	}
	
	/**
	 * Setea la componente y de la coordenada.
	 * @param int y nuevo valor de la componente y.
	 */
	public void setY(int y){
		this.y = y;
	}
}